home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / SECURITY / MNGLR140 / PASLEX.PAS < prev    next >
Pascal/Delphi Source File  |  1996-05-01  |  13KB  |  867 lines

  1.  
  2. (* lexical analyzer template (TP Lex V3.0), V1.0 3-2-91 AG *)
  3.  
  4. (* global definitions: *)
  5. {*
  6.  
  7. Pascal lexical analyzer
  8.  
  9. *}
  10.  
  11.  
  12.  
  13. function yylex : Integer;
  14.  
  15. procedure yyaction ( yyruleno : Integer );
  16.   (* local definitions: *)
  17.  
  18. var
  19.   kw : integer;
  20.   Stop : Boolean;
  21.  
  22. begin
  23.   (* actions: *)
  24.   case yyruleno of
  25.   1:
  26.                           begin
  27.                             yytext := UpStr(yytext);
  28.                             if is_keyword(yytext, kw)
  29.                              then  return(kw)
  30.                              else  return(IDENTIFIER);
  31.                           end;
  32.  
  33.  
  34.   2,
  35.   3,
  36.   4,
  37.   5:
  38.                           return(NUMBER);
  39.  
  40.   6,
  41.   7:
  42.                           return(_CHAR);
  43.  
  44.  
  45.   8:
  46.                           return(COLON);
  47.   9:
  48.                  return(SEMICOLON);
  49.   10:
  50.                  return(DOT);
  51.   11:
  52.                   return(DOTDOT);
  53.   12:
  54.                           return(ASSIGNMENT);
  55.   13:
  56.                           return(EQUAL);
  57.   14:
  58.                  return(LPAREN);
  59.   15:
  60.                           return(RPAREN);
  61.   16:
  62.                           return(LBRAC);
  63.   17:
  64.                           return(RBRAC);
  65.   18:
  66.                           return(COMMA);
  67.   19:
  68.                   return(GE);
  69.   20:
  70.                   return(LE);
  71.   21:
  72.                   return(NOTEQUAL);
  73.  
  74.   22:
  75.                  return(UPARROW);
  76.  
  77.   23:
  78.                           return(CHARACTER_STRING);
  79.  
  80.   24:
  81.                           return(DIRECTIVE);
  82.  
  83.   25:
  84.                           begin
  85.                             Stop := FALSE;
  86.                             repeat
  87.                               if (get_char = '*') and (get_char = ')') then
  88.                                 Stop := TRUE;
  89.                             until Stop;
  90.                           end;
  91.  
  92.   26:
  93.                           begin
  94.                 repeat
  95.                             until get_char = '}';
  96.                           end;
  97.  
  98.   27:
  99.                      ;
  100.  
  101.   28:
  102.                           begin
  103.                             if Random(50) = 25 then
  104.                               WriteProgress;
  105.                           end;
  106.  
  107.   29:
  108.                           ;
  109.  
  110.   30:
  111.                           return(OTHER);
  112.  
  113.   end;
  114. end(*yyaction*);
  115.  
  116. (* DFA table: *)
  117.  
  118. type YYTRec = record
  119.                 cc : set of Char;
  120.                 s  : Integer;
  121.               end;
  122.  
  123. const
  124.  
  125. yynmarks   = 54;
  126. yynmatches = 54;
  127. yyntrans   = 89;
  128. yynstates  = 50;
  129.  
  130. yyk : array [1..yynmarks] of Integer = (
  131.   { 0: }
  132.   { 1: }
  133.   { 2: }
  134.   1,
  135.   30,
  136.   { 3: }
  137.   30,
  138.   { 4: }
  139.   5,
  140.   30,
  141.   { 5: }
  142.   30,
  143.   { 6: }
  144.   30,
  145.   { 7: }
  146.   8,
  147.   30,
  148.   { 8: }
  149.   9,
  150.   30,
  151.   { 9: }
  152.   10,
  153.   30,
  154.   { 10: }
  155.   13,
  156.   30,
  157.   { 11: }
  158.   14,
  159.   30,
  160.   { 12: }
  161.   15,
  162.   30,
  163.   { 13: }
  164.   16,
  165.   30,
  166.   { 14: }
  167.   17,
  168.   30,
  169.   { 15: }
  170.   18,
  171.   30,
  172.   { 16: }
  173.   30,
  174.   { 17: }
  175.   30,
  176.   { 18: }
  177.   22,
  178.   30,
  179.   { 19: }
  180.   30,
  181.   { 20: }
  182.   26,
  183.   30,
  184.   { 21: }
  185.   27,
  186.   30,
  187.   { 22: }
  188.   28,
  189.   { 23: }
  190.   29,
  191.   { 24: }
  192.   30,
  193.   { 25: }
  194.   1,
  195.   { 26: }
  196.   { 27: }
  197.   5,
  198.   { 28: }
  199.   { 29: }
  200.   2,
  201.   { 30: }
  202.   4,
  203.   { 31: }
  204.   6,
  205.   { 32: }
  206.   { 33: }
  207.   12,
  208.   { 34: }
  209.   11,
  210.   { 35: }
  211.   25,
  212.   { 36: }
  213.   19,
  214.   { 37: }
  215.   20,
  216.   { 38: }
  217.   21,
  218.   { 39: }
  219.   { 40: }
  220.   23,
  221.   { 41: }
  222.   { 42: }
  223.   3,
  224.   { 43: }
  225.   2,
  226.   { 44: }
  227.   7,
  228.   { 45: }
  229.   24,
  230.   { 46: }
  231.   { 47: }
  232.   3
  233.   { 48: }
  234.   { 49: }
  235. );
  236.  
  237. yym : array [1..yynmatches] of Integer = (
  238. { 0: }
  239. { 1: }
  240. { 2: }
  241.   1,
  242.   30,
  243. { 3: }
  244.   30,
  245. { 4: }
  246.   5,
  247.   30,
  248. { 5: }
  249.   30,
  250. { 6: }
  251.   30,
  252. { 7: }
  253.   8,
  254.   30,
  255. { 8: }
  256.   9,
  257.   30,
  258. { 9: }
  259.   10,
  260.   30,
  261. { 10: }
  262.   13,
  263.   30,
  264. { 11: }
  265.   14,
  266.   30,
  267. { 12: }
  268.   15,
  269.   30,
  270. { 13: }
  271.   16,
  272.   30,
  273. { 14: }
  274.   17,
  275.   30,
  276. { 15: }
  277.   18,
  278.   30,
  279. { 16: }
  280.   30,
  281. { 17: }
  282.   30,
  283. { 18: }
  284.   22,
  285.   30,
  286. { 19: }
  287.   30,
  288. { 20: }
  289.   26,
  290.   30,
  291. { 21: }
  292.   27,
  293.   30,
  294. { 22: }
  295.   28,
  296. { 23: }
  297.   29,
  298. { 24: }
  299.   30,
  300. { 25: }
  301.   1,
  302. { 26: }
  303. { 27: }
  304.   5,
  305. { 28: }
  306. { 29: }
  307.   2,
  308. { 30: }
  309.   4,
  310. { 31: }
  311.   6,
  312. { 32: }
  313. { 33: }
  314.   12,
  315. { 34: }
  316.   11,
  317. { 35: }
  318.   25,
  319. { 36: }
  320.   19,
  321. { 37: }
  322.   20,
  323. { 38: }
  324.   21,
  325. { 39: }
  326. { 40: }
  327.   23,
  328. { 41: }
  329. { 42: }
  330.   3,
  331. { 43: }
  332.   2,
  333. { 44: }
  334.   7,
  335. { 45: }
  336.   24,
  337. { 46: }
  338. { 47: }
  339.   3
  340. { 48: }
  341. { 49: }
  342. );
  343.  
  344. yyt : array [1..yyntrans] of YYTrec = (
  345. { 0: }
  346.   ( cc: [ #0 ]; s: 23),
  347.   ( cc: [ #1..#8,#11,#13..#31,'!','"','%','&','*','+',
  348.             '/','?','@','\','`','|'..#255 ]; s: 24),
  349.   ( cc: [ #9,#12,' ' ]; s: 21),
  350.   ( cc: [ #10 ]; s: 22),
  351.   ( cc: [ '#' ]; s: 6),
  352.   ( cc: [ '$' ]; s: 5),
  353.   ( cc: [ '''' ]; s: 19),
  354.   ( cc: [ '(' ]; s: 11),
  355.   ( cc: [ ')' ]; s: 12),
  356.   ( cc: [ ',' ]; s: 15),
  357.   ( cc: [ '-' ]; s: 3),
  358.   ( cc: [ '.' ]; s: 9),
  359.   ( cc: [ '0'..'9' ]; s: 4),
  360.   ( cc: [ ':' ]; s: 7),
  361.   ( cc: [ ';' ]; s: 8),
  362.   ( cc: [ '<' ]; s: 17),
  363.   ( cc: [ '=' ]; s: 10),
  364.   ( cc: [ '>' ]; s: 16),
  365.   ( cc: [ 'A'..'Z','_','a'..'z' ]; s: 2),
  366.   ( cc: [ '[' ]; s: 13),
  367.   ( cc: [ ']' ]; s: 14),
  368.   ( cc: [ '^' ]; s: 18),
  369.   ( cc: [ '{' ]; s: 20),
  370. { 1: }
  371.   ( cc: [ #0 ]; s: 23),
  372.   ( cc: [ #1..#8,#11,#13..#31,'!','"','%','&','*','+',
  373.             '/','?','@','\','`','|'..#255 ]; s: 24),
  374.   ( cc: [ #9,#12,' ' ]; s: 21),
  375.   ( cc: [ #10 ]; s: 22),
  376.   ( cc: [ '#' ]; s: 6),
  377.   ( cc: [ '$' ]; s: 5),
  378.   ( cc: [ '''' ]; s: 19),
  379.   ( cc: [ '(' ]; s: 11),
  380.   ( cc: [ ')' ]; s: 12),
  381.   ( cc: [ ',' ]; s: 15),
  382.   ( cc: [ '-' ]; s: 3),
  383.   ( cc: [ '.' ]; s: 9),
  384.   ( cc: [ '0'..'9' ]; s: 4),
  385.   ( cc: [ ':' ]; s: 7),
  386.   ( cc: [ ';' ]; s: 8),
  387.   ( cc: [ '<' ]; s: 17),
  388.   ( cc: [ '=' ]; s: 10),
  389.   ( cc: [ '>' ]; s: 16),
  390.   ( cc: [ 'A'..'Z','_','a'..'z' ]; s: 2),
  391.   ( cc: [ '[' ]; s: 13),
  392.   ( cc: [ ']' ]; s: 14),
  393.   ( cc: [ '^' ]; s: 18),
  394.   ( cc: [ '{' ]; s: 20),
  395. { 2: }
  396.   ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 25),
  397. { 3: }
  398.   ( cc: [ '0'..'9' ]; s: 26),
  399. { 4: }
  400.   ( cc: [ '.' ]; s: 28),
  401.   ( cc: [ '0'..'9' ]; s: 27),
  402.   ( cc: [ 'E' ]; s: 29),
  403. { 5: }
  404.   ( cc: [ '0'..'9','A'..'F','a'..'f' ]; s: 30),
  405. { 6: }
  406.   ( cc: [ '$' ]; s: 32),
  407.   ( cc: [ '0'..'9' ]; s: 31),
  408. { 7: }
  409.   ( cc: [ '=' ]; s: 33),
  410. { 8: }
  411. { 9: }
  412.   ( cc: [ '.' ]; s: 34),
  413. { 10: }
  414. { 11: }
  415.   ( cc: [ '*' ]; s: 35),
  416. { 12: }
  417. { 13: }
  418. { 14: }
  419. { 15: }
  420. { 16: }
  421.   ( cc: [ '=' ]; s: 36),
  422. { 17: }
  423.   ( cc: [ '=' ]; s: 37),
  424.   ( cc: [ '>' ]; s: 38),
  425. { 18: }
  426. { 19: }
  427.   ( cc: [ #1..'&','('..#255 ]; s: 39),
  428.   ( cc: [ '''' ]; s: 40),
  429. { 20: }
  430.   ( cc: [ '$' ]; s: 41),
  431. { 21: }
  432. { 22: }
  433. { 23: }
  434. { 24: }
  435. { 25: }
  436.   ( cc: [ '0'..'9','A'..'Z','_','a'..'z' ]; s: 25),
  437. { 26: }
  438.   ( cc: [ '.' ]; s: 48),
  439.   ( cc: [ '0'..'9' ]; s: 26),
  440.   ( cc: [ 'E' ]; s: 29),
  441. { 27: }
  442.   ( cc: [ '.' ]; s: 28),
  443.   ( cc: [ '0'..'9' ]; s: 27),
  444.   ( cc: [ 'E' ]; s: 29),
  445. { 28: }
  446.   ( cc: [ '0'..'9' ]; s: 42),
  447. { 29: }
  448.   ( cc: [ '+','-' ]; s: 49),
  449.   ( cc: [ '0'..'9' ]; s: 43),
  450. { 30: }
  451.   ( cc: [ '0'..'9','A'..'F','a'..'f' ]; s: 30),
  452. { 31: }
  453.   ( cc: [ '0'..'9' ]; s: 31),
  454. { 32: }
  455.   ( cc: [ '0'..'9','A'..'F','a'..'f' ]; s: 44),
  456. { 33: }
  457. { 34: }
  458. { 35: }
  459. { 36: }
  460. { 37: }
  461. { 38: }
  462. { 39: }
  463.   ( cc: [ #1..'&','('..#255 ]; s: 39),
  464.   ( cc: [ '''' ]; s: 40),
  465. { 40: }
  466.   ( cc: [ '''' ]; s: 39),
  467. { 41: }
  468.   ( cc: [ #1..'|','~'..#255 ]; s: 41),
  469.   ( cc: [ '}' ]; s: 45),
  470. { 42: }
  471.   ( cc: [ '0'..'9' ]; s: 47),
  472.   ( cc: [ 'E' ]; s: 29),
  473. { 43: }
  474.   ( cc: [ '0'..'9' ]; s: 43),
  475. { 44: }
  476.   ( cc: [ '0'..'9','A'..'F','a'..'f' ]; s: 44),
  477. { 45: }
  478. { 46: }
  479.   ( cc: [ 'E' ]; s: 29),
  480. { 47: }
  481.   ( cc: [ '0'..'9' ]; s: 47),
  482. { 48: }
  483.   ( cc: [ '0'..'9' ]; s: 46),
  484. { 49: }
  485.   ( cc: [ '0'..'9' ]; s: 43)
  486. );
  487.  
  488. yykl : array [0..yynstates-1] of Integer = (
  489. { 0: } 1,
  490. { 1: } 1,
  491. { 2: } 1,
  492. { 3: } 3,
  493. { 4: } 4,
  494. { 5: } 6,
  495. { 6: } 7,
  496. { 7: } 8,
  497. { 8: } 10,
  498. { 9: } 12,
  499. { 10: } 14,
  500. { 11: } 16,
  501. { 12: } 18,
  502. { 13: } 20,
  503. { 14: } 22,
  504. { 15: } 24,
  505. { 16: } 26,
  506. { 17: } 27,
  507. { 18: } 28,
  508. { 19: } 30,
  509. { 20: } 31,
  510. { 21: } 33,
  511. { 22: } 35,
  512. { 23: } 36,
  513. { 24: } 37,
  514. { 25: } 38,
  515. { 26: } 39,
  516. { 27: } 39,
  517. { 28: } 40,
  518. { 29: } 40,
  519. { 30: } 41,
  520. { 31: } 42,
  521. { 32: } 43,
  522. { 33: } 43,
  523. { 34: } 44,
  524. { 35: } 45,
  525. { 36: } 46,
  526. { 37: } 47,
  527. { 38: } 48,
  528. { 39: } 49,
  529. { 40: } 49,
  530. { 41: } 50,
  531. { 42: } 50,
  532. { 43: } 51,
  533. { 44: } 52,
  534. { 45: } 53,
  535. { 46: } 54,
  536. { 47: } 54,
  537. { 48: } 55,
  538. { 49: } 55
  539. );
  540.  
  541. yykh : array [0..yynstates-1] of Integer = (
  542. { 0: } 0,
  543. { 1: } 0,
  544. { 2: } 2,
  545. { 3: } 3,
  546. { 4: } 5,
  547. { 5: } 6,
  548. { 6: } 7,
  549. { 7: } 9,
  550. { 8: } 11,
  551. { 9: } 13,
  552. { 10: } 15,
  553. { 11: } 17,
  554. { 12: } 19,
  555. { 13: } 21,
  556. { 14: } 23,
  557. { 15: } 25,
  558. { 16: } 26,
  559. { 17: } 27,
  560. { 18: } 29,
  561. { 19: } 30,
  562. { 20: } 32,
  563. { 21: } 34,
  564. { 22: } 35,
  565. { 23: } 36,
  566. { 24: } 37,
  567. { 25: } 38,
  568. { 26: } 38,
  569. { 27: } 39,
  570. { 28: } 39,
  571. { 29: } 40,
  572. { 30: } 41,
  573. { 31: } 42,
  574. { 32: } 42,
  575. { 33: } 43,
  576. { 34: } 44,
  577. { 35: } 45,
  578. { 36: } 46,
  579. { 37: } 47,
  580. { 38: } 48,
  581. { 39: } 48,
  582. { 40: } 49,
  583. { 41: } 49,
  584. { 42: } 50,
  585. { 43: } 51,
  586. { 44: } 52,
  587. { 45: } 53,
  588. { 46: } 53,
  589. { 47: } 54,
  590. { 48: } 54,
  591. { 49: } 54
  592. );
  593.  
  594. yyml : array [0..yynstates-1] of Integer = (
  595. { 0: } 1,
  596. { 1: } 1,
  597. { 2: } 1,
  598. { 3: } 3,
  599. { 4: } 4,
  600. { 5: } 6,
  601. { 6: } 7,
  602. { 7: } 8,
  603. { 8: } 10,
  604. { 9: } 12,
  605. { 10: } 14,
  606. { 11: } 16,
  607. { 12: } 18,
  608. { 13: } 20,
  609. { 14: } 22,
  610. { 15: } 24,
  611. { 16: } 26,
  612. { 17: } 27,
  613. { 18: } 28,
  614. { 19: } 30,
  615. { 20: } 31,
  616. { 21: } 33,
  617. { 22: } 35,
  618. { 23: } 36,
  619. { 24: } 37,
  620. { 25: } 38,
  621. { 26: } 39,
  622. { 27: } 39,
  623. { 28: } 40,
  624. { 29: } 40,
  625. { 30: } 41,
  626. { 31: } 42,
  627. { 32: } 43,
  628. { 33: } 43,
  629. { 34: } 44,
  630. { 35: } 45,
  631. { 36: } 46,
  632. { 37: } 47,
  633. { 38: } 48,
  634. { 39: } 49,
  635. { 40: } 49,
  636. { 41: } 50,
  637. { 42: } 50,
  638. { 43: } 51,
  639. { 44: } 52,
  640. { 45: } 53,
  641. { 46: } 54,
  642. { 47: } 54,
  643. { 48: } 55,
  644. { 49: } 55
  645. );
  646.  
  647. yymh : array [0..yynstates-1] of Integer = (
  648. { 0: } 0,
  649. { 1: } 0,
  650. { 2: } 2,
  651. { 3: } 3,
  652. { 4: } 5,
  653. { 5: } 6,
  654. { 6: } 7,
  655. { 7: } 9,
  656. { 8: } 11,
  657. { 9: } 13,
  658. { 10: } 15,
  659. { 11: } 17,
  660. { 12: } 19,
  661. { 13: } 21,
  662. { 14: } 23,
  663. { 15: } 25,
  664. { 16: } 26,
  665. { 17: } 27,
  666. { 18: } 29,
  667. { 19: } 30,
  668. { 20: } 32,
  669. { 21: } 34,
  670. { 22: } 35,
  671. { 23: } 36,
  672. { 24: } 37,
  673. { 25: } 38,
  674. { 26: } 38,
  675. { 27: } 39,
  676. { 28: } 39,
  677. { 29: } 40,
  678. { 30: } 41,
  679. { 31: } 42,
  680. { 32: } 42,
  681. { 33: } 43,
  682. { 34: } 44,
  683. { 35: } 45,
  684. { 36: } 46,
  685. { 37: } 47,
  686. { 38: } 48,
  687. { 39: } 48,
  688. { 40: } 49,
  689. { 41: } 49,
  690. { 42: } 50,
  691. { 43: } 51,
  692. { 44: } 52,
  693. { 45: } 53,
  694. { 46: } 53,
  695. { 47: } 54,
  696. { 48: } 54,
  697. { 49: } 54
  698. );
  699.  
  700. yytl : array [0..yynstates-1] of Integer = (
  701. { 0: } 1,
  702. { 1: } 24,
  703. { 2: } 47,
  704. { 3: } 48,
  705. { 4: } 49,
  706. { 5: } 52,
  707. { 6: } 53,
  708. { 7: } 55,
  709. { 8: } 56,
  710. { 9: } 56,
  711. { 10: } 57,
  712. { 11: } 57,
  713. { 12: } 58,
  714. { 13: } 58,
  715. { 14: } 58,
  716. { 15: } 58,
  717. { 16: } 58,
  718. { 17: } 59,
  719. { 18: } 61,
  720. { 19: } 61,
  721. { 20: } 63,
  722. { 21: } 64,
  723. { 22: } 64,
  724. { 23: } 64,
  725. { 24: } 64,
  726. { 25: } 64,
  727. { 26: } 65,
  728. { 27: } 68,
  729. { 28: } 71,
  730. { 29: } 72,
  731. { 30: } 74,
  732. { 31: } 75,
  733. { 32: } 76,
  734. { 33: } 77,
  735. { 34: } 77,
  736. { 35: } 77,
  737. { 36: } 77,
  738. { 37: } 77,
  739. { 38: } 77,
  740. { 39: } 77,
  741. { 40: } 79,
  742. { 41: } 80,
  743. { 42: } 82,
  744. { 43: } 84,
  745. { 44: } 85,
  746. { 45: } 86,
  747. { 46: } 86,
  748. { 47: } 87,
  749. { 48: } 88,
  750. { 49: } 89
  751. );
  752.  
  753. yyth : array [0..yynstates-1] of Integer = (
  754. { 0: } 23,
  755. { 1: } 46,
  756. { 2: } 47,
  757. { 3: } 48,
  758. { 4: } 51,
  759. { 5: } 52,
  760. { 6: } 54,
  761. { 7: } 55,
  762. { 8: } 55,
  763. { 9: } 56,
  764. { 10: } 56,
  765. { 11: } 57,
  766. { 12: } 57,
  767. { 13: } 57,
  768. { 14: } 57,
  769. { 15: } 57,
  770. { 16: } 58,
  771. { 17: } 60,
  772. { 18: } 60,
  773. { 19: } 62,
  774. { 20: } 63,
  775. { 21: } 63,
  776. { 22: } 63,
  777. { 23: } 63,
  778. { 24: } 63,
  779. { 25: } 64,
  780. { 26: } 67,
  781. { 27: } 70,
  782. { 28: } 71,
  783. { 29: } 73,
  784. { 30: } 74,
  785. { 31: } 75,
  786. { 32: } 76,
  787. { 33: } 76,
  788. { 34: } 76,
  789. { 35: } 76,
  790. { 36: } 76,
  791. { 37: } 76,
  792. { 38: } 76,
  793. { 39: } 78,
  794. { 40: } 79,
  795. { 41: } 81,
  796. { 42: } 83,
  797. { 43: } 84,
  798. { 44: } 85,
  799. { 45: } 85,
  800. { 46: } 86,
  801. { 47: } 87,
  802. { 48: } 88,
  803. { 49: } 89
  804. );
  805.  
  806.  
  807. var yyn : Integer;
  808.  
  809. label start, scan, action;
  810.  
  811. begin
  812.  
  813. start:
  814.  
  815.   (* initialize: *)
  816.  
  817.   yynew;
  818.  
  819. scan:
  820.  
  821.   (* mark positions and matches: *)
  822.  
  823.   for yyn := yykl[yystate] to     yykh[yystate] do yymark(yyk[yyn]);
  824.   for yyn := yymh[yystate] downto yyml[yystate] do yymatch(yym[yyn]);
  825.  
  826.   if yytl[yystate]>yyth[yystate] then goto action; (* dead state *)
  827.  
  828.   (* get next character: *)
  829.  
  830.   yyscan;
  831.  
  832.   (* determine action: *)
  833.  
  834.   yyn := yytl[yystate];
  835.   while (yyn<=yyth[yystate]) and not (yyactchar in yyt[yyn].cc) do inc(yyn);
  836.   if yyn>yyth[yystate] then goto action;
  837.     (* no transition on yyactchar in this state *)
  838.  
  839.   (* switch to new state: *)
  840.  
  841.   yystate := yyt[yyn].s;
  842.  
  843.   goto scan;
  844.  
  845. action:
  846.  
  847.   (* execute action: *)
  848.  
  849.   if yyfind(yyrule) then
  850.     begin
  851.       yyaction(yyrule);
  852.       if yyreject then goto action;
  853.     end
  854.   else if not yydefault and yywrap then
  855.     begin
  856.       yyclear;
  857.       return(0);
  858.     end;
  859.  
  860.   if not yydone then goto start;
  861.  
  862.   yylex := yyretval;
  863.  
  864. end(*yylex*);
  865.  
  866.  
  867.